# -*- coding: UTF-8 -*-
"""
这个杂物箱里面的东西应该完全独立，他甚至可以放到公共包里，只是这些东西只在本项目使用，而且很小、很乱
"""
import json
from typing import List, Dict

from common_libs.cache_utils import get_redis_connection
from dispatcher.routers.dispatch.dispatch_task_model_in import RetryTimeIntervalModel


def string_format(strs: List, separate:str = None, boundary=None):
    ret = f"{separate or ' '}".join(map(str, strs))
    if boundary:
        return '('+ret+')'
    return ret

async def update_task_cache(data_block: Dict):
    """
    缓存中正在调度的任务的状态变更，这里的变更采用覆盖式，无论有没有这条记录都会直接设置一个新的
    :param data_block:字典格式的数据包
    :return:
    """
    conn = await get_redis_connection()
    key = f"{data_block.get('dispatch_type')}:{data_block.get('task_type')}:{data_block.get('block_sn')}"
    bean_data = json.dumps(data_block, ensure_ascii=False, separators=(',', ':'))
    await conn.setex(name=key, value=bean_data)

def get_task_await_seconds(interval: RetryTimeIntervalModel):
    """
    用于确认任务的重试间隔
    :param interval:
    :return:
    """
    # todo
    return 1